Transisi dari array gaya C ke std::array mewakili perubahan mendasar menuju keamanan tipe dan pemrograman generik dalam C++ Modern.
1. Masalah Dekay Pointer
Array warisan (int arr[N]) mengalami "dekay pointer." Ketika dilewatkan ke fungsi, mereka kehilangan metadata ukuran dan berubah menjadi pointer mentah (int*). Hal ini menyebabkan aritmetika pointer yang tidak aman dan overflow buffer.
2. Modernisasi C++11
std::array memberikan wrapper tipis, wrapper tanpa beban di sekitar array mentah. Ini terintegrasi dengan STL (Standard Template Library) sambil menghargai Aturan Lima.
3. Pengalihan Sempurna dengan std::forward
C++11 memperkenalkan std::forward untuk memastikan std::array objek berpindah melalui wrapper templat tanpa salinan berlebihan. Dengan memanfaatkan Aturan Penggabungan Referensi, kita menjaga kategori nilai objek (lvalue vs rvalue).
$$T\&\& + \& \rightarrow T\&$$